package main

import (
	"fmt"
	"time"
)

func put(c chan int) {
	time.Sleep(time.Second * 5)
	c <- 10
}

func main() {
	//问题：
	//1.如果管道关闭后，不断读取，会报错吗？
	//2.如果是空管道，进行读取，会报错吗？ 直接报错
	//3.不关闭管道，直接进行遍历，会报错吗？ 报错
	//4.使用协程的情况下，一个读操作，会等待一个写操作？？？
	//	协程情况下，主线程如果先执行读操作，管道中没有数据，会等待 go协程的写操作
	intChan := make(chan int, 10)

	go put(intChan)

	num := <-intChan
	fmt.Println("确实在等待,取出结果为：", num)
	//close(intChan)

	//for {
	//	v, ok := <-intChan
	//	if !ok {
	//		break
	//	}
	//	fmt.Printf("readData 读到数据=%v\n", v)
	//}
	//close(intChan)
	//for v := range intChan {
	//	fmt.Println("v=", v)
	//}

}
